package com.han.spring.core.aop.aspectJ;

import org.aspectj.lang.annotation.After;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author hanpeng
 * @version 创建时间：2020年7月9日 上午10:58:42
 * @ClassName 类名称
 * @Description 类描述
 */
public class AspectJTest {
	@Test
	public void aspectJTest() {
		ApplicationContext context = new ClassPathXmlApplicationContext("aop_aspectJ.xml");
		// 这里需要写接口 MathCal.class 不可以写实体类 因为它有接口
		MathCal bean = context.getBean("mathCalIml", MathCal.class);
		System.out.println(bean.add(1, 2));
		//测试后置通知 @After
		System.out.println(bean.div(12, 0));
		
		/*// 没有实现接口 使用cglib 创建动态代理
		CglibHandler bean2 = context.getBean("cglibHandler", CglibHandler.class);
		bean2.test();*/

	}
	
	@Test
	public void aspectJXMLTest() {
		ApplicationContext context = new ClassPathXmlApplicationContext("aop_aspectJ_xml.xml");
		// 这里需要写接口 MathCal.class 不可以写实体类 因为它有接口
		MathCal bean = context.getBean("mathCalIml", MathCal.class);
		System.out.println(bean.add(1, 2));
		//测试后置通知 @After
		System.out.println(bean.div(12, 0));
		
		/*// 没有实现接口 使用cglib 创建动态代理
		CglibHandler bean2 = context.getBean("cglibHandler", CglibHandler.class);
		bean2.test();*/

	}
}
